虚拟环境搭建[二选一即可]
pipenv 安装与使用
1 | #方式一: |
virtualenvwrapper
virtualenvwrapper是用来管理virtualenv的扩展包,用着很方便。
项目地址
安装
1 | #安装virtualenv |
配置
修改~/.bash_profile或其它环境变量相关文件(如 .bashrc(我的Ubuntu15.10 下的是这个) 或用 ZSH 之后的 .zshrc),添加以下语句:
1 | #WORKON_HOME,PROJECT_HOME 可以替换成你自己的目录 |
用法
1 | #创建运行环境blog |
Flask 的实例化和启动
1 | #导入 Flask 模块包 |
注册路由方式一
1 | #使用装饰器来诸恶路由,启动的参数为 URL 的路径,对应的会调用 index() 函数 |
如果直接使用/index
那么不能兼容浏览器不能访问/index/和/index,
解决办法,路径定义改成/index/
1 | @app.route('/index/') |
在路径xxx后添加斜杠/后就可以访问xxx/ 和 xxx的原理
重定向:当你访问url1的时候,服务器返回状态码302让用户访问url2
访问http://localhost:5000/index
,观察浏览器网络请求情况,可以看到发生了重定向,重定向到了http://localhost:5000/index/
为什么这么做呢?
这是因为,如果不做重定向,不带/ 的(index)和带/的(index/)都可以访问到视图函数。
那么就是说同一个视图函数对应着两个不同的路由,没有保证唯一url的原则
唯一url的好处
如果有两个url,那么在搜索引擎中会被索引两次,
这样会浪费性能,影响搜索引擎的优化,没有这个必要。
注册路由方式二
1 | #通过调用app的add_url_rule函数 |
- 实际上方法1装饰器的模式,内部就是调用了add_url_rule函数。下面来看一下源码
1 | def route(self, rule, **options): |
Flask 配置文件
1 | #载入配置文件 |
要点
- 配置文件中的 KEY
必须全部是大写
![必须大写!] - DEBUG 是 Flask 中的一个默认变量,如果想要覆盖,
必须名字一模一样
。
if name == “name“:
为什么要添加这句:if __name__ == "__name__"
加入这个判断以后,只有在启动入口文件以后,才会执行。而在被其他模块导入的时候不会执行
加入的优势:
在生产环境中,我们一般是采用 Nginx + uwsgi 来部署我们的 Python 项目,我们使用 uwsgi 来启动项目的 flask 服务的时候,这个时候项目的启动文件(我们这项目文件名为:run.py),只是作为一个模块被调用,这时加上入口判断,在生产环境就就不会执行 app.run()方法,否则就会启动两个 Flask 服务。
1 | # run.py 文件代码 |